import axios from 'axios'
import VueAxios from 'vue-axios'
import { useStore } from '@/store'

//弹框标记
let msgFlag = false

//--------------------------------Axios配置拦截----------------------------------------

axios.interceptors.request.use(
  (config) => {
    let store = useStore()
    //请求拦截处理
    let token = store.token
    if (token) {
      // config.headers.common['Authorization'] = token; //axios低版本时使用的
    }
    return config
  },
  (error) => {
    // ElMessage.error("request：" + error)
    return Promise.resolve(error)
    // return Promise.reject(error);
  }
)

axios.interceptors.response.use(
  async (response) => {
    //动态导入router
    const dynamicRouter = await import('./router')
    const router = dynamicRouter.default
    // console.log('请求成功了', response.data)
	if(response.data.code === -1){
		router.replace('/login/login')
	}
    if (response.data || response.data.code === 0) {
      //请求响应处理
      return response
    } else {
      // ElMessage.error(response.data.message)
      return Promise.reject(response.data) //返回一个被拒绝的对象
    }
  },
  async (error) => {
    //解决Token失效多次弹框问题
    if (!msgFlag) {
      //动态导入router
      const dynamicRouter = await import('./router')
      const router = dynamicRouter.default
      if (error.response) {
        error.message = error.response.data.message
      }
      // ElMessage.error('请求失败：' + error.message)
      if (error.response.data.code === -1) {
        router.replace('/login')
      }
      msgFlag = true
      setTimeout(() => {
        msgFlag = false
      }, 3000)
    }
    return Promise.reject(error) //返回一个被拒绝的对象
    // return Promise.resolve(error); //返回一个被解决的对象
  }
)

//导出多个（属性/方法）
export { axios, VueAxios }
